Introducing Hybrid Search and Rerank to Improve the Retrieval Accuracy of the RAG System
ポイント
Difyではこれらを組むことができる
概要
この記事では、RAGシステムをハイブリッド検索とRerank技術で強化することについて議論し、LLMを使用してより包括的で正確な検索結果を得るための検索精度と効率を向上させることに焦点を当てています。
現在、大規模モデルを使用する開発者は、Retrieval Augmented Generation (RAG) を理解する必要があります。この記事を書く前に、多くの技術記事がRAGを単に埋め込みベースのベクトル検索と大規模モデル生成技術の融合として狭義に定義していることに気付きました。
しかし、さまざまな業界でのRAGアプリケーションの広範な探索と実験を1年間行った後、ベクトル検索技術だけに頼るのは、特に本番環境への展開では、RAGアプリケーション開発には不十分であることが明らかになりました。
9月、Microsoft Azure AIは「Azure Cognitive Search: ハイブリッド検索とランキング機能によるベクトル検索の性能向上」というタイトルのブログ記事を公開しました。
この記事は、ハイブリッド検索とRe-Rank技術の入門編です。これらの技術の基本原理と、RAGシステムの再現効果を高める上でのそれらの役割について説明します。さらに、本番レベルのRAGアプリケーションを開発する際の複雑さについても議論します。 入門的な技術記事として、まず単純な言葉でRAGシステムの正体を明らかにします。
RAGの概念説明
今年、ベクトル検索に特化したRAGアーキテクチャは、大規模モデルが最新の外部知識を獲得し、幻覚の問題を軽減するための主要なフレームワークになり、多くのシナリオで実用的に実装されています。 開発者はこの技術を活用して、カスタマーサービスボット、企業の知識ベース、AI検索エンジンなどの費用対効果の高いAIソリューションを構築できます。これらのシステムは、自然言語の入力とさまざまな知識組織の方法を使用してやり取りします。
たとえば、図に示すように、ユーザーが「アメリカ合衆国の大統領は誰ですか?」と尋ねると、システムは大規模モデルに直接問い合わせるのではなく、まず知識ベース(Wikipediaなど)でベクトル検索を行い、意味的類似性を通じて関連情報を見つけます(例: 「バイデンは現在の第46代アメリカ合衆国大統領です...」)。次に、ユーザーの質問とこの検索された情報を大規模モデルに与えることで、より正確な回答を提供できるようにします。
https://scrapbox.io/files/6632e8dd15890b0024d6b3a9.png
なぜこれが必要なのか?
大規模モデルは、さまざまな人間の領域に精通したスーパーエキスパートだと考えてください。しかし、その限界は、個人特有の情報を知らないことです。そのようなデータはプライベートであり、オンラインでは入手できないため、事前に学習することはできません。
たとえば、このスーパーエキスパートをあなたの個人的な財務アドバイザーとして雇う場合、質問に答える前に、投資記録や家族の支出を確認する必要があります。この個人情報があってこそ、テーラーメイドのプロフェッショナルなアドバイスを提供できるのです。
これこそがRAGシステムの機能です。大規模モデルに不足している外部知識を装備し、質問に答える前に答えを見つけることができるようにします。
この例は、RAGシステムの本質が外部知識の検索にあることを明確に示しています。専門家が正確な財務アドバイスを提供する能力は、必要な情報へのアクセスにかかっています。投資記録の代わりに、家族の減量計画などの無関係なデータが検索された場合、最も熟練した専門家でも効果がありません。
前述のように、意味的関連性に焦点を当てたベクトル検索は、RAG検索フェーズの主要な方法です。その技術原理は、外部の知識ベースからのドキュメントを意味的に完全な段落または文に分解し、それらをコンピューターが理解できる数値表現(多次元ベクトル)に埋め込むことを含みます。このプロセスは、ユーザーのクエリにも適用されます。 コンピューターは、ユーザークエリと文の間の微妙な意味的関係を検出できます。たとえば、「猫がネズミを追いかける」と「子猫がネズミを狩る」の意味的関係は、「猫がネズミを追いかける」と「私はハムを食べるのが好きです」の関係よりも強くなります。最も関連性の高いテキストを特定すると、RAGシステムはこの情報を大規模モデルのコンテキストとして使用し、質問に対する回答の作成を支援します。
複雑な意味的テキスト検索に加えて、ベクトル検索にはいくつかの利点があります。
マウス/mousestrap/チーズやGoogle/Bing/検索エンジンの比較に例示される類似の意味を理解します。
英語の入力と中国語のコンテンツのマッチングを可能にするなど、多言語の理解を提供します。
テキスト、画像、音声、動画間の類似マッチングを可能にする、マルチモーダルな理解をサポートします。
スペルミスや曖昧な説明を効率的に処理する、フォールトトレランスを提供します。
ただし、ベクトル検索には、次のようなシナリオで不足している点があります。
Elon MuskやiPhone 15などの人物や物の特定の名前を検索する。
RAGやRLHFなどの頭字語や短いフレーズを検索する。
gpt-3.5-turboやtitan-xlarge-v1.01などのIDを検索する。
これらの制限は、従来の全文検索(キーワード検索)が優れている点です。特に次の点で優れています。 正確なマッチング
商品名、人名、商品コードなど
ほんの数文字でのマッチング
ベクトル検索では難しいが、ユーザーの間では一般的なもの
低頻度の語彙とのマッチング
これらの単語はしばしば重要な意味を持っています。たとえば、「コーヒーを飲みに行きませんか?」では、「have」や「coffee」は「you」や「me」よりも意味があります。
ほとんどのテキスト検索シナリオでは、最も関連性の高い結果が候補リストに表示されることを保証することが主な目的です。ベクトル検索とキーワード検索はどちらも検索において長所があります。ハイブリッド検索は、これら2つの技術の利点を組み合わせ、それぞれの弱点を補完します。
https://scrapbox.io/files/6632ec57170e6d00254a11a5.png
ハイブリッド検索では、事前にデータベースにベクトルとキーワードのインデックスを確立する必要があります。ユーザークエリを入力すると、システムはベクトル検索とキーワード検索の両方のモードを利用して、ドキュメントから最も関連性の高いテキストを取得します。 「ハイブリッド検索」には正確な定義がありません。この記事では、ベクトル検索とキーワード検索の統合を例として使用しています。ただし、他の検索アルゴリズムを組み合わせることもハイブリッド検索に該当します。たとえば、エンティティ関係の検索に使用されるナレッジグラフ技術とベクトル検索技術を組み合わせることは、このカテゴリーに含まれます。 各検索システムには、テキストの正確、意味的、主題的、構造的、エンティティ、時間的、イベント的など、さまざまな微妙な関係を識別する長所があります。すべてのシナリオに適した単一の検索モードはありません。ハイブリッド検索は、複数の検索システムを組み合わせることで、さまざまな検索技術のシナジーを実現します。
検索技術の選択は、手元の特定の問題によって決まることを強調することが重要です。RAGシステムは、本質的にオープンドメインの自然言語ベースの質問応答システムとして機能します。オープンエンドのユーザークエリに対して高い事実の再現率を達成するには、アプリケーションシナリオを一般化し、適切な検索モードまたは組み合わせを選択することが重要です。
したがって、RAGシステムを設計する際には、ユーザーを理解し、ユーザーが最も尋ねる可能性のある質問のタイプを理解することが不可欠です。
ハイブリッド検索は、様々な検索技術を効果的に組み合わせて再現性を向上させますが、異なる検索モードからのクエリ結果をマージし、正規化する必要があります。このプロセスは、大規模モデルにデータを入力する前に、データをより良い比較、分析、および処理のための統一された標準に変換します。ここで、スコアリングシステム、特にRerankモデルが不可欠になります。
Rerankモデルは、ユーザーのクエリとの意味的整合性に基づいて候補ドキュメントを再ランク付けすることにより、意味的ソート結果を改善します。その中核原理は、ユーザーの質問と各ドキュメントの関連性スコアを計算し、関連性の高い順にドキュメントのリストを返すことです。人気のあるrerankモデルには、Cohere rerank、bge-rerankerなどがあります。
https://scrapbox.io/files/6632ef5138605f0024e8ca15.png
通常、再ランク付けの前に予備検索が行われます。クエリと何百万ものドキュメントの関連性スコアを計算するのは非常に非効率的だからです。したがって、再ランク付けは多くの場合、検索プロセスの最後に位置し、さまざまな検索システムからの結果を統合してソートするのに理想的です。
ただし、再ランク付けは、異なる検索システムからの結果を組み合わせるだけに限定されません。単一の検索モードでも有益です。キーワード検索後の意味的再ランク付けなど、再ランク付けステップを導入すると、ドキュメントの再現効果が大幅に向上します。
実際のアプリケーションでは、複数のクエリ結果を正規化することに加えて、大規模モデルに渡されるテキストセグメントの数は、通常、それらを提供する前に制限されます(つまり、TopK、rerankモデルのパラメーターで調整可能)。この制限は、大規模モデルの入力ウィンドウサイズが通常4Kから128Kトークンの範囲であるためです。したがって、モデルの入力ウィンドウサイズの制約に合わせて、適切なセグメンテーション戦略とTopK値を選択する必要があります。
十分に大きなモデルのコンテキストウィンドウがあっても、過剰な数の再現セグメントは、あまり関連性の低いコンテンツを持ち込み、回答の品質を低下させる可能性があることを認識することが重要です。したがって、Rerankでより大きなTopKパラメーターが必ずしも良い結果につながるわけではありません。 Re-Rankは、検索技術の代替ではなく、既存の検索システムを強化する補完的なツールと見なされるべきです。その主な利点は、検索結果を絞り込むためのシンプルで複雑さの低い方法を提供し、インフラストラクチャに大きな変更を加えることなく、既存の検索システムに意味的関連性を統合できることです。 Cohere Rerankを例にとると、その統合は簡単です。ユーザーはアカウントに登録してAPIキーを取得するだけで済み、2行のコードで実装できます。さらに、Cohere Rerankは多言語モデルをサポートしているため、さまざまな言語のテキストクエリを同時にソートできます。
Azure AIの実験データ評価
Azure AIは、キーワード検索、ベクトル検索、ハイブリッド検索、ハイブリッド検索 + Re-Rankを組み合わせたものなど、RAGシステムのさまざまな検索モードに対して実験データのテストを行いました。結果は、ハイブリッド検索とrerankを組み合わせることで、ドキュメントの再現関連性が大幅に向上し、RAGアーキテクチャを採用した生成AIシナリオで特に効果的であることを示しています。 以下の評価結果は、さまざまなクエリシナリオについて詳述しており、ハイブリッド検索とrerankによって、さまざまなユースケースシナリオでドキュメントの再現品質がどの程度向上したかを示しています。
https://scrapbox.io/files/6634824f26e34c0023c86746.png
https://scrapbox.io/files/6634820da2a5660025b9825e.png
多様なクエリシナリオに対する評価結果を以下に示します。ハイブリッド検索とrerankを組み合わせることで、異なるユースケースシナリオにおいて、ドキュメントの再現品質が変動的に向上していることがわかります。
https://scrapbox.io/files/66348267e81220002434d6a8.png
結論
この議論では、RAGシステムのドキュメント再現品質を高めるために、ハイブリッド検索とsemantic rerankを統合する原理と実用性を強調しました。しかし、これはRAG検索パイプラインの設計の一部に過ぎません。
RAGアプリケーションを真に強化するには、孤立した最適化ではなく、包括的なエンジニアリングアプローチが不可欠です。ユーザーシナリオを深く理解し、複雑なオープンドメインの質問応答の課題を的を絞った戦略に分解する能力が鍵となります。この理解は、インデックス作成、セグメンテーション、検索、rerankなどの技術の効果的な組み合わせを選択するための基礎を形成します。
Dify.AIでは、このRAGシステムの再現効果を高めるために、この記事で述べたハイブリッド検索とRerankの手法を取り入れています。検索モードとrerankを統合し、マルチパス検索を追加することで、ユーザークエリと高い関連性のあるコンテンツを優先的に取り上げることができます。このアプローチにより、検索結果の網羅性と精度が大幅に向上し、LLMをベースにした効率的な質問応答システムを効果的に構築できます。